/**
 * 
 */
package com.gwcloud.leetcode.offers;

/**
 * @ClassName   : Leetcode0560 
 * @author      : ganwei 
 * @date        : 2020年6月8日
 * @Description : Leetcode0560 数组中数字出现的次数
 */
public class Leetcode0560 {
	/**
	 * -解题思路，hashmap,但不满足空间复杂度要求
	 */
    public int[] singleNumbers(int[] nums) {
    	int ret = 0;  //异或的和
    	int a = 0;    //A组异或
    	int b = 0;    //B组异或
    	
    	for(int num : nums){
    		ret ^= num;
    	}
    	int h = 1;
    	
    	while((ret & h) == 0){
    		h = h << 1;
    	}
    	
    	for(int num : nums){
    		if((num & h) == 0){
    			a ^= num;
    		}else{
    			b ^= num;
    		}
    	}
    	int[] res =new int[2];
    	res[0] = a;
    	res[1] = b;
    	return res;
    }
}
